package comun;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.*;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity
@Table(name="Casillas")
public class CasillaCorreo implements Serializable
{
	private static final long serialVersionUID = -7781349547707480001L;

	@Id
	@Column(length=40)
	private String nombreCasilla;
	
	// 1 casilla ---> * Inbox
	// 1 Inbox ---> 1 Casilla
	// si elimino una casilla de correo, se eliminan sus inbox tambien:
	@OneToMany (fetch = FetchType.EAGER)
	@Cascade({CascadeType.ALL, CascadeType.DELETE_ORPHAN})
	@JoinColumn(name="nombreCasilla")
	//@JoinColumn(name="idInbox")
	private List<Inbox> mensajesInbox;
	// el nombre casilla es el de la casila a la que pertenece el inbox
	
	public CasillaCorreo (String nom)
	{
		this.nombreCasilla = nom ;
		this.mensajesInbox = new ArrayList<Inbox> () ;
	}
	
	public CasillaCorreo ()
	{
		this.nombreCasilla = "" ;
		this.mensajesInbox = new ArrayList<Inbox> () ;
	}
	
	public void agregarInbox (Inbox inbox)
	{
		this.mensajesInbox.add(inbox) ;
	}
	
	public String toString ()
	{
		return ("CASILLA: " + this.nombreCasilla) ;
	}

	public String getNombreCasilla() {
		return nombreCasilla;
	}

	public void setNombreCasilla(String nombreCasilla) {
		this.nombreCasilla = nombreCasilla;
	}

	public List<Inbox> getMensajesInbox() {
		return this.mensajesInbox;
	}
	
}
